//
//  MGCustomPickView.h
//  MGPublic
//
//  Created by lhongl on 2025/10/24.
//

#import "MGAlertBottomViewController.h"
@class MGCustomPickViewDateSelectModel;
NS_ASSUME_NONNULL_BEGIN
@class MGCustomPickView;
typedef NS_ENUM(NSInteger,  MGPickerViewType) {
    YearMonthDayHourMinuteType, //年月日,时分
    YearMonthDayHourType, //年月日,时
    YearMonthDayType,  //年月日
    YearMonthType, //年月
    YearType, //年
    customType ///自定义
};

@protocol MGCustomPickViewDelegate <NSObject>

@optional
/// pickView结果
/// - Parameters:
///   - pickView 对象
///   - result: 结果
///   - type: 类型
- (void)customPickView:(MGCustomPickView *)pickView 
                result:(NSString *)result
                  type:(MGPickerViewType)type;


@end

@interface MGCustomPickView : MGAlertBottomViewController

/// 代理
@property (nonatomic, weak) id<MGCustomPickViewDelegate> delegate;

/// 最大时间 【时间范围，当前事件前后50年,其他时间未处理，可能产生崩溃】
@property (nonatomic, strong, nullable) NSDate *maxDate;

/// 最小时间 【时间范围，当前事件前后50年,其他时间未处理，可能产生崩溃】
@property (nonatomic, strong, nullable) NSDate *minDate;

/// 设置选中值 【时间范围，当前事件前后50年，超出时间错误未知不在处理】
@property (nonatomic, strong, nullable) NSDate  *selectDate;


#pragma mark 扩展类型
@property (nonatomic) id extend;

- (instancetype)init UNAVAILABLE_ATTRIBUTE;
+ (instancetype)new UNAVAILABLE_ATTRIBUTE;


/// 弹框文字
/// - Parameters:
///   - items: 标题文字
///   - index: 下标
- (instancetype)initCustomWithTitles:(NSArray <NSString *>*)items index:(NSInteger)index;


/// 初始化
/// - Parameter type: 类型 【设置customType无效】
- (instancetype)initCustomWithType:(MGPickerViewType)type;

@end

#pragma mark 选中对象
@interface MGCustomPickViewDateSelectModel : NSObject

/// 年
@property (nonatomic, assign) NSInteger year;

/// 月
@property (nonatomic, assign) NSInteger month;

/// 天
@property (nonatomic, assign) NSInteger day;

/// 时
@property (nonatomic, assign) NSInteger hour;

/// 秒
@property (nonatomic, assign) NSInteger minute;

/// 初始化时间
@property (nonatomic, strong) NSDate *initializeDate;

- (instancetype)init UNAVAILABLE_ATTRIBUTE;
+ (instancetype)new UNAVAILABLE_ATTRIBUTE;
/// 初始化
/// - Parameter date: 时间
- (instancetype)initWithDate:(NSDate *)date;

@end

NS_ASSUME_NONNULL_END
